/*******
 * @description:设置cookies函数
 * @author: 琴时
 * @param {key} [设置cookies的键]
 * @param {value} [设置cookies的值]
 * @param {expires}  [设置cookies有效期间单位：天]
 * @return {*} [截止有效期 = 当前时间戳 + 有效期间时间戳]
 */
export const setCookie = (key, value, expires) => {
  let exDate = new Date() // 创建时间对象
  const startTime = exDate.getTime() //将当前时间转换成毫秒数
  const exTime = 24 * 60 * 60 * 1000 * expires //构建有效期间毫秒数
  exDate.setTime(startTime + exTime) //将截止有效期时间戳转换成时间对象
  // 字符串拼接cookie
  //默认情况下，cookie 在浏览器关闭时删除, 使用 path 参数告诉浏览器 cookie 的路径。默认情况下，cookie 属于当前页面(path=/)。
  //cookie 设置过期时间 （expires=）
  window.document.cookie =
    key + '=' + value + ';path=/;expires=' + exDate.toUTCString()
}

/*******
 * @description:读取指定cookie
 * @author: 琴时
 * @param {params} [指定cookies的键]
 * @return {*} 返回cookies值
 */
export const getCookie = params => {
  let cookieObj = null
  if (document.cookie.length === 0) return cookieObj
  let arr = document.cookie.split('; ') //通过分号连空格将字符串切割成数组
  arr.some(element => {
    let arr2 = element.split('=') // 通过=再次切割
    if (arr2[0] === params) {
      cookieObj = { key: arr2[0], value: arr2[1] }
      return true
    }
    return false
  })
  return cookieObj
}

/*******
 * @description:读取所有cookie
 * @author: 琴时
 * @return {*} 返回cookies值
 */
export const getCookies = () => {
  let cookieObj = []
  if (document.cookie.length === 0) return cookieObj
  let array = document.cookie.split('; ') //通过分号连空格将字符串切割成数组
  cookieObj = array.map(item => {
    let arr2 = item.split('=') // 通过=再次切割
    return {
      key: arr2[0],
      value: arr2[1],
    }
  })
  return cookieObj
}

/*******
 * @description:清除所有cookie
 * @author: 琴时
 * @return {*}
 */
export const clearCookies = () => {
  getCookies().forEach(element => {
    setCookie(element.key, '', -1) //将生命周期改为-1
  })
}

/*******
 * @description:清除指定cookie
 * @author: 琴时
 * @param {params} [指定cookies的键]
 * @return {*}
 */
export const clearCookie = key => {
  setCookie(key, '', -1) // 将生命周期改为-1
}

/**
 * 测试用例
 * 直接无法测试，请使用npm start ==>在浏览器访问:http://127.0.0.1:3000/test
 * F12打开控制台 查看
 */

/* 
      setCookie('userName', '琴时', 1)
      setCookie('age', '18', 1)
      console.log('测试获取cookie-userName:', getCookie('userName'))
      console.log('测试所有cookie:', getCookies())
      clearCookie('userName') //解开注释将清除cookie
      console.log('测试清除cookie：userName---------------------- ')
      console.log('测试所有cookie:', getCookies())
      console.log('测试清除所有cookie-----------------------------')
      clearCookies()
      console.log('测试所有cookie:', getCookies())
*/
